<?php

class GcNodeFormHandler {
	
	private $_form;
	private $_form_state;
	private $_form_id;

	private function addGroupTypeSelectionCheckbox() {
	 $this->_form['group_fieldset'] = array(
	  '#type' => 'fieldset',
	  '#title' => t('Group Catalog Settings'),
	  '#weight' => 5,
	  '#collapsible' => TRUE,
	  '#collapsed' => FALSE,
	 );
	 
	 // pobieramy aktualną wartość tego pola w bazie
	 $isActive = false;
	 
	 // czy mamy już nid ? Jeśli nie mamy, to dopiero tworzymy nowy node i na pewno nie jest 
	 // to grupa główna
	 if(isset($this->_form['nid']['#value'])) {
	   $groupNid = $this->_form['nid']['#value'];
	     if($groupNid) {
	     $isActive = _groups_catalog_is_main_group($groupNid) ? TRUE : FALSE;	
	   }
	 }
	 $this->_form['group_fieldset']['group_type'] = array(
	    '#type' => 'checkbox',
      '#title' => t('Mark as a main group'),
	    '#default_value' => $isActive,
	    '#description' => t('This group node will act as main group - group that will be shown in main groups navigation')
	 );	
	}
	
	
	/**
	 * Funkcja dodaje ustawienia do formularza edycyjnego
	 * @return unknown_type
	 */
	private function addNodeFormActions() {
		
		// dodaj nową funkcję submitującą
		$this->_form['#submit'][] = 'gc_node_form_submit';
		
		// dodaj nową funkcję validującą
		$this->_form['#validate'][] = 'gc_node_form_validate';
		
	}
	
	public function __construct(&$form, &$form_state, $form_id) {
		$this->_form        = &$form;
		$this->_form_state  = &$form_state;
		$this->_form_id     = $form_id;
	}
	
	public function handle() {
		$this->addGroupTypeSelectionCheckbox();
		$this->addNodeFormActions();
	}
	
	public static function addGcNodeFormJs() {
		
		//drupal
	}
	
}

/* funkcje deklarowane poza zasięgiem - aby były widoczne dla silnika Drupala - 
 * ale ideowo należące do zakresu działań klasy
 */


/**
 * Funkcja zajmująca się validacją formularza z node grupy
 * @return unknown_type
 */
function gc_node_form_validate(&$form, &$form_values) {
	// musimy osobno dla walidacji włączyć javascript - taki los
	GcNodeFormHandler::addGcNodeFormJs();
	if($form_values['values']['group_type']) { // ta grupa ma być grupą główną

		// grupa główna nie może być podgrupą dla żadnej grupy
		$form_values['values']['field_group_reference'] = array (
      0 => array(
        'nid' => ""
      )  
	  );
	}

}



